package cxf.services;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.WebParam.Mode;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
import javax.xml.ws.Holder;

@WebService(name="ServicePortType", targetNamespace="http://cxftest.simpleservice")
@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL, parameterStyle=ParameterStyle.BARE)
public interface SimpleService {
	
	// Only need these when @SOAPBinding(parameterStyle=ParameterStyle.WRAPPED)
//	@RequestWrapper(className="cxf.services.SimpleRequest", localName="simpleRequestWrapper")
//	@ResponseWrapper(className="cxf.services.SimpleResponse", localName="simpleResponseWrapper")
	@WebResult(name="responseReturn", partName="responseReturnPart")
	SimpleResponse getSimpleResp(@WebParam(name="requestParam", partName="requestParamPart") SimpleRequest request, 
								 @WebParam(name="token", partName="tokenPart", header=true) String token, 
								 @WebParam(name="timestamp", partName="timestampPart", header=true, mode=Mode.OUT) Holder<String> timeStampHolder);
	
	@WebResult(name="responseReturn", partName="responseReturnPart")
	SimpleResponse getSimpleRespTwo(@WebParam(name="requestParam", partName="requestParamPart") SimpleRequest request, 
								 @WebParam(name="token", partName="tokenPart", header=true) String token, 
								 @WebParam(name="timestamp", partName="timestampPart", header=true, mode=Mode.OUT) Holder<String> timeStampHolder);
}
